/**
 * Copyright (c) 2023 OceanBase
 * OceanBase Migration Service LogProxy is licensed under Mulan PubL v2.
 * You can use this software according to the terms and conditions of the Mulan PubL v2.
 * You may obtain a copy of Mulan PubL v2 at:
 *          http://license.coscl.org.cn/MulanPubL-2.0
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PubL v2 for more details.
 */

#pragma once

#include <cstdint>
#include <unordered_map>
#include <shared_mutex>

#include "common.h"

namespace oceanbase {
namespace binlog {
struct SysVar {
  uint32_t net_buffer_length = 4096;
  uint32_t max_allowed_packet = 64 << 20;
  uint32_t net_read_timeout = 30;
  uint32_t net_write_timeout = 60;
  uint64_t net_retry_count = 10;

  std::shared_timed_mutex global_var_mutex;

  void add_global_var(const std::string& key, const std::string& value)
  {
    std::unique_lock<std::shared_timed_mutex> lock(global_var_mutex);
    support_global_var[key] = value;
  }

  int get_global_var(const std::string& key, std::string& value)
  {
    std::shared_lock<std::shared_timed_mutex> lock(global_var_mutex);
    auto iter = support_global_var.find(key);
    if (iter != support_global_var.end()) {
      value = iter->second;
      return OMS_OK;
    } else {
      return OMS_FAILED;
    }
  }

  std::unordered_map<std::string, std::string> get_all_global_var()
  {
    std::shared_lock<std::shared_timed_mutex> lock(global_var_mutex);
    return support_global_var;
  }

private:
  /*!
   * @brief System variables supported by mysql
   */
  std::unordered_map<std::string, std::string> support_global_var = {{"binlog_gtid_recovery_ordinal", "1"},
      {"binlog_gtid_simple_recovery", "ON"},
      {"binlog_gtid_recovery_ignore_duplicates", "OFF"},
      {"autocommit", "ON"},
      {"character_set_client", "utf8mb4"},
      {"character_set_connection", "utf8mb4"},
      {"character_set_database", "utf8mb4"},
      {"character_set_filesystem", "binary"},
      {"character_set_results", "utf8mb4"},
      {"character_set_server", "utf8mb4"},
      {"collation_connection", "utf8mb4_general_ci"},
      {"collation_database", "utf8mb4_general_ci"},
      {"collation_server", "utf8mb4_general_ci"},
      {"completion_type", "NO_CHAIN"},
      {"concurrent_insert", "AUTO"},
      {"connect_timeout", "10"},
      {"datadir", "/usr/local/var/mysql/"},
      {"date_format", "%Y-%m-%d"},
      {"datetime_format", "%Y-%m-%d %H:%i:%s"},
      {"default_storage_engine", "InnoDB"},
      {"default_tmp_storage_engine", "InnoDB"},
      {"default_week_format", "0"},
      {"delay_key_write", "ON"},
      {"disabled_storage_engines", ""},
      {"div_precision_increment", "4"},
      {"enforce_gtid_consistency", "OFF"},
      {"eq_range_index_dive_limit", "200"},
      {"event_scheduler", "OFF"},
      {"expire_logs_days", "0"},
      {"explicit_defaults_for_timestamp", "OFF"},
      {"flush", ""},
      {"flush_time", "0"},
      {"foreign_key_checks", "ON"},
      {"ft_bool_syntax", "+ -><()~*:\"\"&|"},
      {"ft_max_word_len", "84"},
      {"ft_min_word_len", "4"},
      {"ft_query_expansion_limit", "20"},
      {"ft_stopword_file", "(built-in)"},
      {"general_log", "OFF"},
      {"group_concat_max_len", "1024"},
      {"gtid_mode", "ON"},
      {"gtid_executed", ""},
      {"gtid_purged", ""},
      {"gtid_next", "AUTOMATIC"},
      {"gtid_owned", ""},
      {"gtid_executed_compression_period", "1000"},
      {"have_compress", "YES"},
      {"have_crypt", "YES"},
      {"have_dynamic_loading", "YES"},
      {"have_geometry", "YES"},
      {"have_openssl", "DISABLED"},
      {"have_profiling", "YES"},
      {"have_query_cache", "YES"},
      {"have_rtree_keys", "YES"},
      {"have_ssl", "DISABLED"},
      {"have_symlink", "YES"},
      {"host_cache_size", "279"},
      {"hostname", "localhost"},
      {"identity", "0"},
      {"ignore_builtin_innodb", "OFF"},
      {"ignore_db_dirs", ""},
      {"init_connect", ""},
      {"init_file", ""},
      {"init_slave", ""},
      {"innodb_adaptive_flushing", "ON"},
      {"innodb_adaptive_flushing_lwm", "10"},
      {"innodb_adaptive_hash_index", "ON"},
      {"innodb_adaptive_hash_index_parts", "8"},
      {"innodb_adaptive_max_sleep_delay", "150000"},
      {"innodb_additional_mem_pool_size", "8388608"},
      {"innodb_api_bk_commit_interval", "5"},
      {"innodb_api_disable_rowlock", "OFF"},
      {"innodb_api_enable_binlog", "OFF"},
      {"innodb_api_enable_mdl", "OFF"},
      {"innodb_api_trx_level", "0"},
      {"innodb_autoextend_increment", "64"},
      {"innodb_autoinc_lock_mode", "1"},
      {"innodb_buffer_pool_dump_at_shutdown", "ON"},
      {"innodb_buffer_pool_dump_now", "OFF"},
      {"innodb_buffer_pool_dump_pct", "25"},
      {"innodb_buffer_pool_filename", "ib_buffer_pool"},
      {"innodb_buffer_pool_instances", "8"},
      {"innodb_buffer_pool_load_abort", "OFF"},
      {"innodb_buffer_pool_load_at_startup", "ON"},
      {"innodb_buffer_pool_load_now", "OFF"},
      {"innodb_buffer_pool_max_dirty_pages_pct", "75"},
      {"innodb_buffer_pool_max_dump_file_size", "0"},
      {"innodb_buffer_pool_max_size", "134217728"},
      {"innodb_buffer_pool_min_evictable_pct", "5"},
      {"innodb_buffer_pool_size", "134217728"},
      {"innodb_change_buffer_max_size", "25"},
      {"innodb_change_buffering", "all"},
      {"innodb_checksum_algorithm", "crc32"},
      {"innodb_checksums", "ON"},
      {"innodb_cleaner_lsn_age_factor", "high_checkpoint"},
      {"innodb_cmp_per_index_enabled", "OFF"},
      {"innodb_commit_concurrency", "0"},
      {"innodb_compression_algorithm", "zlib"},
      {"innodb_compression_default", "OFF"},
      {"innodb_compression_failure_threshold_pct", "5"},
      {"innodb_compression_level", "6"},
      {"innodb_compression_pad_pct_max", "50"},
      {"innodb_concurrency_tickets", "5000"},
      {"innodb_data_file_path", "ibdata1:12M:autoextend"},
      {"innodb_data_home_dir", "/usr/local/var/mysql/"},
      {"innodb_deadlock_detect_interval", "5000"},
      {"innodb_dedicated_server", "OFF"},
      {"innodb_default_row_format", "dynamic"},
      {"innodb_defragment", "OFF"},
      {"innodb_defragment_fill_factor", "0.9"},
      {"innodb_defragment_fill_factor_n_recs", "20"},
      {"innodb_defragment_frequency", "40"},
      {"innodb_defragment_n_pages", "7"},
      {"innodb_defragment_stats_accuracy", "0"},
      {"innodb_disable_sort_file_cache", "OFF"},
      {"innodb_disallow_writes", "OFF"},
      {"innodb_doublewrite", "ON"},
      {"innodb_fast_shutdown", "1"},
      {"innodb_file_format", "Barracuda"},
      {"innodb_file_format_check", "ON"},
      {"innodb_file_format_max", "Barracuda"},
      {"innodb_file_per_table", "ON"},
      {"innodb_fill_factor", "100"},
      {"innodb_flush_log_at_timeout", "1"},
      {"innodb_flush_log_at_trx_commit", "1"},
      {"innodb_flush_method", ""},
      {"innodb_flush_neighbors", "1"},
      {"innodb_flush_sync", "ON"},
      {"innodb_flushing_avg_loops", "30"},
      {"innodb_force_load_corrupted", "OFF"},
      {"innodb_force_recovery", "0"},
      {"innodb_ft_aux_table", ""},
      {"innodb_ft_cache_size", "8000000"},
      {"innodb_ft_enable_diag_print", "OFF"},
      {"innodb_ft_enable_stopword", "ON"},
      {"innodb_ft_max_token_size", "84"},
      {"innodb_ft_min_token_size", "3"},
      {"innodb_ft_num_word_optimize", "2000"},
      {"innodb_ft_result_cache_limit", "2000000000"},
      {"innodb_ft_server_stopword_table", ""},
      {"innodb_ft_sort_pll_degree", "2"},
      {"innodb_ft_total_cache_size", "640000000"},
      {"innodb_ft_user_stopword_table", ""},
      {"innodb_idle_flush_pct", "100"},
      {"innodb_import_table_from_xtrabackup", "0"},
      {"innodb_index_stats_approx_pct", "0"},
      {"innodb_io_capacity", "200"},
      {"innodb_io_capacity_max", "2000"},
      {"innodb_kill_idle_transaction", "0"},
      {"innodb_large_prefix", "ON"},
      {"innodb_lazy_drop_table", "0"},
      {"innodb_lock_wait_timeout", "50"},
      {"innodb_locks_unsafe_for_binlog", "OFF"},
      {"innodb_log_arch_dir", "."},
      {"innodb_log_archive", "OFF"},
      {"innodb_log_buffer_size", "8388608"},
      {"innodb_log_checksum_algorithm", "crc32"},
      {"innodb_log_compressed_pages", "ON"},
      {"innodb_log_file_size", "50331648"},
      {"innodb_log_files_in_group", "2"},
      {"innodb_log_group_home_dir", "./"},
      {"innodb_lru_scan_depth", "1024"},
      {"innodb_max_bitmap_file_size", "104857600"},
      {"innodb_max_changed_pages", "1000000"},
      {"innodb_max_dirty_pages_pct", "75"},
      {"innodb_max_dirty_pages_pct_lwm", "0"},
      {"innodb_max_purge_lag", "0"},
      {"innodb_max_purge_lag_delay", "0"},
      {"innodb_max_undo_log_size", "1073741824"},
      {"innodb_monitor_disable", ""},
      {"innodb_monitor_enable", ""},
      {"innodb_monitor_reset", ""},
      {"innodb_monitor_reset_all", ""},
      {"innodb_mtflush_threads", "8"},
      {"innodb_numa_interleave", "AUTO"},
      {"innodb_old_blocks_pct", "37"},
      {"innodb_old_blocks_time", "1000"},
      {"innodb_online_alter_log_max_size", "134217728"},
      {"innodb_open_files", "2000"},
      {"innodb_optimize_fulltext_only", "OFF"},
      {"innodb_page_cleaners", "4"},
      {"innodb_page_size", "16384"},
      {"innodb_print_all_deadlocks", "OFF"},
      {"innodb_print_ddl_logs", "OFF"},
      {"innodb_purge_batch_size", "300"},
      {"innodb_purge_rseg_truncate_frequency", "128"},
      {"innodb_purge_threads", "1"},
      {"innodb_random_read_ahead", "OFF"},
      {"innodb_read_ahead_threshold", "56"},
      {"innodb_read_io_threads", "4"},
      {"innodb_read_only", "OFF"},
      {"innodb_replication_delay", "0"},
      {"innodb_rollback_on_timeout", "OFF"},
      {"innodb_rollback_segments", "128"},
      {"innodb_sched_priority_cleaner", "19"},
      {"innodb_show_locks_held", "10"},
      {"innodb_show_verbose_locks", "OFF"},
      {"innodb_sort_buffer_size", "1048576"},
      {"innodb_spin_wait_delay", "6"},
      {"innodb_stats_auto_recalc", "ON"},
      {"innodb_stats_include_delete_marked", "OFF"},
      {"innodb_stats_method", "nulls_equal"},
      {"innodb_stats_on_metadata", "ON"},
      {"innodb_stats_persistent", "ON"},
      {"innodb_stats_persistent_sample_pages", "20"},
      {"innodb_stats_sample_pages", "8"},
      {"innodb_stats_transient_sample_pages", "8"},
      {"innodb_status_output", "OFF"},
      {"innodb_status_output_locks", "OFF"},
      {"innodb_strict_mode", "OFF"},
      {"innodb_support_xa", "ON"},
      {"innodb_sync_array_size", "1"},
      {"innodb_sync_spin_loops", "30"},
      {"innodb_table_locks", "ON"},
      {"innodb_thread_concurrency", "0"},
      {"innodb_thread_sleep_delay", "10000"},
      {"innodb_tmpdir", ""},
      {"innodb_undo_directory", "./"},
      {"innodb_undo_logs", "128"},
      {"innodb_undo_tablespaces", "0"},
      {"innodb_use_native_aio", "ON"},
      {"innodb_use_sys_malloc", "ON"},
      {"innodb_version", "5.7.34"},
      {"innodb_warn_mutexes", "OFF"},
      {"innodb_write_io_threads", "4"},
      {"interactive_timeout", "28800"},
      {"internal_tmp_disk_storage_engine", "InnoDB"},
      {"join_buffer_size", "262144"},
      {"keep_files_on_create", "OFF"},
      {"key_buffer_size", "8388608"},
      {"key_cache_age_threshold", "300"},
      {"key_cache_block_size", "1024"},
      {"key_cache_division_limit", "100"},
      {"keyring_file_data", ""},
      {"large_files_support", "ON"},
      {"large_page_size", "0"},
      {"large_pages", "OFF"},
      {"lc_messages", "en_US"},
      {"lc_messages_dir", "/usr/local/Cellar/mysql/5.7.34/share/mysql"},
      {"lc_time_names", "en_US"},
      {"license", "GPL"},
      {"local_infile", "ON"},
      {"lock_wait_timeout", "31536000"},
      {"log_bin", "OFF"},
      {"log_bin_basename", ""},
      {"log_bin_index", ""},
      {"log_bin_trust_function_creators", "OFF"},
      {"log_bin_use_v1_row_events", "OFF"},
      {"log_builtin_as_identified_by_password", "OFF"},
      {"log_error", "/usr/local/var/mysql/MacBook-Pro-2.local.err"},
      {"log_error_verbosity", "3"},
      {"log_output", "FILE"},
      {"log_queries_not_using_indexes", "OFF"},
      {"log_slave_updates", "OFF"},
      {"log_slow_admin_statements", "OFF"},
      {"log_slow_slave_statements", "OFF"},
      {"log_statements_unsafe_for_binlog", "ON"},
      {"log_syslog", "OFF"},
      {"log_syslog_facility", "daemon"},
      {"log_syslog_include_pid", "ON"},
      {"log_syslog_tag", ""},
      {"log_throttle_queries_not_using_indexes", "0"},
      {"log_timestamps", "UTC"},
      {"log_warnings", "2"},
      {"long_query_time", "10.000000"},
      {"low_priority_updates", "OFF"},
      {"lower_case_file_system", "OFF"},
      {"lower_case_table_names", "0"},
      {"master_info_repository", "FILE"},
      {"innodb_online_alter_log_max_size", "134217728"},
      {"innodb_open_files", "2000"},
      {"innodb_optimize_fulltext_only", "OFF"},
      {"innodb_page_cleaners", "4"},
      {"innodb_page_size", "16384"},
      {"innodb_print_all_deadlocks", "OFF"},
      {"innodb_print_ddl_logs", "OFF"},
      {"innodb_purge_batch_size", "300"},
      {"innodb_purge_rseg_truncate_frequency", "128"},
      {"innodb_purge_threads", "1"},
      {"innodb_random_read_ahead", "OFF"},
      {"innodb_read_ahead_threshold", "56"},
      {"innodb_read_io_threads", "4"},
      {"innodb_read_only", "OFF"},
      {"innodb_replication_delay", "0"},
      {"innodb_rollback_on_timeout", "OFF"},
      {"innodb_rollback_segments", "128"},
      {"innodb_sched_priority_cleaner", "19"},
      {"innodb_show_locks_held", "10"},
      {"innodb_show_verbose_locks", "OFF"},
      {"innodb_sort_buffer_size", "1048576"},
      {"innodb_spin_wait_delay", "6"},
      {"innodb_stats_auto_recalc", "ON"},
      {"innodb_stats_include_delete_marked", "OFF"},
      {"innodb_stats_method", "nulls_equal"},
      {"innodb_stats_on_metadata", "ON"},
      {"innodb_stats_persistent", "ON"},
      {"innodb_stats_persistent_sample_pages", "20"},
      {"innodb_stats_sample_pages", "8"},
      {"innodb_stats_transient_sample_pages", "8"},
      {"innodb_status_output", "OFF"},
      {"innodb_status_output_locks", "OFF"},
      {"innodb_strict_mode", "OFF"},
      {"innodb_support_xa", "ON"},
      {"innodb_sync_array_size", "1"},
      {"innodb_sync_spin_loops", "30"},
      {"innodb_table_locks", "ON"},
      {"innodb_thread_concurrency", "0"},
      {"innodb_thread_sleep_delay", "10000"},
      {"innodb_tmpdir", ""},
      {"innodb_undo_directory", "./"},
      {"innodb_undo_logs", "128"},
      {"innodb_undo_tablespaces", "0"},
      {"innodb_use_native_aio", "ON"},
      {"innodb_use_sys_malloc", "ON"},
      {"innodb_version", "5.7.34"},
      {"innodb_warn_mutexes", "OFF"},
      {"innodb_write_io_threads", "4"},
      {"interactive_timeout", "28800"},
      {"internal_tmp_disk_storage_engine", "InnoDB"},
      {"join_buffer_size", "262144"},
      {"keep_files_on_create", "OFF"},
      {"key_buffer_size", "8388608"},
      {"key_cache_age_threshold", "300"},
      {"key_cache_block_size", "1024"},
      {"key_cache_division_limit", "100"},
      {"keyring_file_data", ""},
      {"large_files_support", "ON"},
      {"large_page_size", "0"},
      {"large_pages", "OFF"},
      {"lc_messages", "en_US"},
      {"lc_messages_dir", "/usr/local/Cellar/mysql/5.7.34/share/mysql"},
      {"lc_time_names", "en_US"},
      {"license", "GPL"},
      {"local_infile", "ON"},
      {"lock_wait_timeout", "31536000"},
      {"log_bin", "OFF"},
      {"log_bin_basename", ""},
      {"log_bin_index", ""},
      {"log_bin_trust_function_creators", "OFF"},
      {"log_bin_use_v1_row_events", "OFF"},
      {"log_builtin_as_identified_by_password", "OFF"},
      {"log_error", "/usr/local/var/mysql/MacBook-Pro-2.local.err"},
      {"log_error_verbosity", "3"},
      {"log_output", "FILE"},
      {"log_queries_not_using_indexes", "OFF"},
      {"log_slave_updates", "OFF"},
      {"log_slow_admin_statements", "OFF"},
      {"log_slow_slave_statements", "OFF"},
      {"log_statements_unsafe_for_binlog", "ON"},
      {"log_syslog", "OFF"},
      {"log_syslog_facility", "daemon"},
      {"log_syslog_include_pid", "ON"},
      {"log_syslog_tag", ""},
      {"log_throttle_queries_not_using_indexes", "0"},
      {"log_timestamps", "UTC"},
      {"log_warnings", "2"},
      {"long_query_time", "10.000000"},
      {"low_priority_updates", "OFF"},
      {"lower_case_file_system", "OFF"},
      {"lower_case_table_names", "0"},
      {"master_info_repository", "FILE"},
      {"master_verify_checksum", "OFF"},
      {"max_allowed_packet", "4194304"},
      {"max_binlog_cache_size", "18446744073709547520"},
      {"max_binlog_size", "1073741824"},
      {"max_binlog_stmt_cache_size", "18446744073709547520"},
      {"max_connect_errors", "100"},
      {"max_connections", "151"},
      {"max_delayed_threads", "20"},
      {"max_digest_length", "1024"},
      {"max_error_count", "64"},
      {"max_heap_table_size", "16777216"},
      {"max_insert_delayed_threads", "20"},
      {"max_join_size", "18446744073709551615"},
      {"max_length_for_sort_data", "1024"},
      {"max_points_in_geometry", "65536"},
      {"max_prepared_stmt_count", "16382"},
      {"max_relay_log_size", "0"},
      {"max_seeks_for_key", "18446744073709551615"},
      {"max_sort_length", "1024"},
      {"max_sp_recursion_depth", "0"},
      {"max_user_connections", "0"},
      {"max_write_lock_count", "18446744073709551615"},
      {"metadata_locks_cache_size", "1024"},
      {"metadata_locks_hash_instances", "8"},
      {"min_examined_row_limit", "0"},
      {"multi_range_count", "256"},
      {"myisam_data_pointer_size", "6"},
      {"myisam_max_sort_file_size", "9223372036853727232"},
      {"myisam_mmap_size", "18446744073709551615"},
      {"myisam_recover_options", "OFF"},
      {"myisam_repair_threads", "1"},
      {"myisam_sort_buffer_size", "8388608"},
      {"myisam_stats_method", "nulls_unequal"},
      {"myisam_use_mmap", "OFF"},
      {"mysql_native_password_proxy_users", "OFF"},
      {"net_buffer_length", "16384"},
      {"net_read_timeout", "30"},
      {"net_retry_count", "10"},
      {"net_write_timeout", "60"},
      {"new", "OFF"},
      {"ngram_token_size", "2"},
      {"offline_mode", "OFF"},
      {"old", "OFF"},
      {"old_alter_table", "OFF"},
      {"old_passwords", "0"},
      {"open_files_limit", "1024"},
      {"optimizer_prune_level", "1"},
      {"optimizer_search_depth", "62"},
      {"optimizer_switch",
          "index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_"
          "intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_"
          "keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge="
          "on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_"
          "with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,"
          "optimize_join_buffer_size=off,table_elimination=on"},
      {"optimizer_trace", "enabled=off,one_line=off"},
      {"optimizer_trace_features", "greedy_search=on,range_optimizer=on,dynamic_range=on,repeated_subselect=on"},
      {"optimizer_trace_limit", "1"},
      {"optimizer_trace_max_mem_size", "16384"},
      {"optimizer_trace_offset", "-1"},
      {"parser_max_mem_size", "18446744073709551615"},
      {"performance_schema", "OFF"},
      {"performance_schema_accounts_size", "-1"},
      {"performance_schema_digests_size", "10000"},
      {"performance_schema_events_stages_history_long_size", "10000"},
      {"performance_schema_events_stages_history_size", "10"},
      {"performance_schema_events_statements_history_long_size", "10000"},
      {"performance_schema_events_statements_history_size", "10"},
      {"performance_schema_events_waits_history_long_size", "10000"},
      {"performance_schema_events_waits_history_size", "10"},
      {"performance_schema_hosts_size", "-1"},
      {"performance_schema_max_cond_classes", "80"},
      {"performance_schema_max_cond_instances", "-1"},
      {"performance_schema_max_file_classes", "50"},
      {"performance_schema_max_file_handles", "32768"},
      {"performance_schema_max_file_instances", "-1"},
      {"performance_schema_max_index_stat", "500"},
      {"performance_schema_max_memory_classes", "320"},
      {"performance_schema_max_mutex_classes", "200"},
      {"performance_schema_max_mutex_instances", "-1"},
      {"performance_schema_max_prepared_statements_instances", "-1"},
      {"performance_schema_max_program_instances", "-1"},
      {"performance_schema_max_rwlock_classes", "30"},
      {"performance_schema_max_rwlock_instances", "-1"},
      {"performance_schema_max_socket_classes", "10"},
      {"performance_schema_max_socket_instances", "-1"},
      {"performance_schema_max_stage_classes", "150"},
      {"performance_schema_max_statement_classes", "193"},
      {"performance_schema_max_statement_stack", "10"},
      {"performance_schema_max_table_handles", "-1"},
      {"performance_schema_max_table_instances", "-1"},
      {"performance_schema_max_table_lock_stat", "5000"},
      {"performance_schema_max_thread_classes", "-1"},
      {"performance_schema_max_thread_instances", "-1"},
      {"performance_schema_session_connect_attrs_size", "512"},
      {"performance_schema_setup_actors_size", "100"},
      {"performance_schema_setup_objects_size", "100"},
      {"performance_schema_users_size", "-1"},
      {"pid_file", "/usr/local/var/mysql/localhost.pid"},
      {"plugin_dir", "/usr/local/lib/plugin/"},
      {"port", "3306"},
      {"preload_buffer_size", "32768"},
      {"profiling", "OFF"},
      {"profiling_history_size", "15"},
      {"protocol_version", "10"},
      {"pseudo_slave_mode", "OFF"},
      {"pseudo_thread_id", "0"},
      {"query_alloc_block_size", "8192"},
      {"query_cache_limit", "1048576"},
      {"query_cache_min_res_unit", "4096"},
      {"query_cache_size", "0"},
      {"query_cache_strip_comments", "OFF"},
      {"query_cache_type", "OFF"},
      {"query_cache_wlock_invalidate", "OFF"},
      {"query_prealloc_size", "8192"},
      {"rand_seed1", "0"},
      {"rand_seed2", "0"},
      {"range_alloc_block_size", "4096"},
      {"range_optimizer_max_mem_size", "8388608"},
      {"rbr_exec_mode", "STRICT"},
      {"read_buffer_size", "131072"},
      {"read_only", "OFF"},
      {"read_rnd_buffer_size", "262144"},
      {"relay_log", ""},
      {"relay_log_basename", ""},
      {"relay_log_index", ""},
      {"relay_log_info_file", "relay-log.info"},
      {"relay_log_info_repository", "FILE"},
      {"relay_log_purge", "ON"},
      {"relay_log_recovery", "OFF"},
      {"relay_log_space_limit", "0"},
      {"report_host", ""},
      {"report_password", ""},
      {"report_port", "0"},
      {"report_user", ""},
      {"require_secure_transport", "OFF"},
      {"rpl_stop_slave_timeout", "31536000"},
      {"secure_auth", "OFF"},
      {"secure_file_priv", ""},
      {"server_id", "0"},
      {"server_id_bits", "32"},
      {"server_uuid", ""},
      {"session_track_gtids", "OFF"},
      {"session_track_schema", "ON"},
      {"session_track_state_change", "OFF"},
      {"session_track_system_variables", ""},
      {"session_track_transaction_info", "OFF"},
      {"sha256_password_auto_generate_rsa_keys", "ON"},
      {"sha256_password_private_key_path", "private_key.pem"},
      {"sha256_password_proxy_users", "OFF"},
      {"sha256_password_public_key_path", "public_key.pem"},
      {"show_compatibility_56", "OFF"},
      {"show_create_table_skip_secondary_indexes", "OFF"},
      {"show_old_temporals", "OFF"},
      {"skip_external_locking", "ON"},
      {"skip_name_resolve", "OFF"},
      {"skip_networking", "OFF"},
      {"skip_show_database", "OFF"},
      {"slave_allow_batching", "OFF"},
      {"slave_checkpoint_group", "512"},
      {"slave_checkpoint_period", "300"},
      {"slave_compressed_protocol", "OFF"},
      {"slave_exec_mode", "STRICT"},
      {"slave_load_tmpdir", "/var/folders/yc/6fg4hccn5bjbbzflh6g8v8zm0000gn/T/"},
      {"slave_max_allowed_packet", "1073741824"},
      {"slave_net_timeout", "60"},
      {"slave_parallel_type", "DATABASE"},
      {"slave_parallel_workers", "0"},
      {"slave_pending_jobs_size_max", "16777216"},
      {"slave_preserve_commit_order", "OFF"},
      {"slave_rows_search_algorithms", "TABLE_SCAN,INDEX_SCAN"},
      {"slave_skip_errors", "OFF"},
      {"slave_sql_verify_checksum", "ON"},
      {"slave_transaction_retries", "10"},
      {"slave_type_conversions", ""},
      {"slow_launch_time", "2"},
      {"slow_query_log", "OFF"},
      {"slow_query_log_file", "/usr/local/var/mysql/localhost-slow.log"},
      {"socket", "/tmp/mysql.sock"},
      {"sort_buffer_size", "262144"},
      {"sql_auto_is_null", "OFF"},
      {"sql_big_selects", "ON"},
      {"sql_buffer_result", "OFF"},
      {"sql_log_bin", "ON"},
      {"sql_log_off", "OFF"},
      {"sql_mode", "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"},
      {"sql_notes", "ON"},
      {"sql_quote_show_create", "ON"},
      {"sql_safe_updates", "OFF"},
      {"sql_select_limit", "18446744073709551615"},
      {"sql_slave_skip_counter", "0"},
      {"sql_warnings", "OFF"},
      {"ssl_ca", ""},
      {"ssl_capath", ""},
      {"ssl_cert", ""},
      {"ssl_cipher", ""},
      {"ssl_crl", ""},
      {"ssl_crlpath", ""},
      {"ssl_key", ""},
      {"stored_program_cache", "256"},
      {"super_read_only", "OFF"},
      {"sync_binlog", "1"},
      {"sync_frm", "ON"},
      {"sync_master_info", "10000"},
      {"sync_relay_log", "10000"},
      {"sync_relay_log_info", "10000"},
      {"system_time_zone", "CST"},
      {"table_definition_cache", "1400"},
      {"table_open_cache", "2000"},
      {"table_open_cache_instances", "16"},
      {"tc_log_max_pages_used", "0"},
      {"tc_log_page_size", "4096"},
      {"temporary_directory", "/var/folders/yc/6fg4hccn5bjbbzflh6g8v8zm0000gn/T/"},
      {"thread_cache_size", "9"},
      {"thread_handling", "one-thread-per-connection"},
      {"thread_stack", "262144"},
      {"time_format", "%H:%i:%s"},
      {"time_zone", "SYSTEM"},
      {"tls_version", ""},
      {"tmp_table_size", "16777216"},
      {"tmpdir", "/var/folders/yc/6fg4hccn5bjbbzflh6g8v8zm0000gn/T/"},
      {"transaction_alloc_block_size", "8192"},
      {"transaction_allow_batching", "OFF"},
      {"transaction_isolation", "REPEATABLE-READ"},
      {"transaction_prealloc_size", "4096"},
      {"transaction_read_only", "OFF"},
      {"transaction_write_set_extraction", "OFF"},
      {"tx_isolation", "REPEATABLE-READ"},
      {"tx_read_only", "OFF"},
      {"unique_checks", "ON"},
      {"updatable_views_with_limit", "YES"},
      {"version", "8.0.23"},
      {"version_comment", "MySQL Community Server - GPL"},
      {"version_compile_machine", "x86_64"},
      {"version_compile_os", "macOS10.15"},
      {"wait_timeout", "28800"},
      {"warning_count", "0"}};
};

}  // namespace binlog
}  // namespace oceanbase
